// 应用配置文件
export const config = {
  // API 配置
  api: {
    baseURL: 'https://api-china.itdos.com', // Microi API地址
    timeout: 10000,
    retry: 3,
  },

  // 应用信息
  app: {
    name: 'uni-app x + CoolUI 框架',
    version: '1.0.0',
    description: '基于 uni-app x 的移动端开发框架',
  },

  // 存储配置 - 统一存储键名
  storage: {
    prefix: 'microi_',
    // Microi系统存储键名
    TOKEN: 'Token',
    TOKEN_EXPIRES: 'TokenExpires',
    USER_INFO: 'UserInfo',
    REFRESH_TOKEN: 'RefreshToken',
    OS_CLIENT: 'OsClient',
    API_BASE: 'ApiBase',
    SYS_CONFIG: 'SysConfig',
    THEME: 'Theme',
    LANGUAGE: 'Language',
    // 兼容旧版本
    tokenKey: 'Token',
    userInfoKey: 'UserInfo',
    themeKey: 'Theme',
    languageKey: 'Language',
  },

  // 主题配置
  theme: {
    primary: '#007aff',
    success: '#28a745',
    warning: '#ffc107',
    danger: '#dc3545',
    info: '#17a2b8',
    light: '#f8f9fa',
    dark: '#343a40',
  },

  // 分页配置
  pagination: {
    defaultPageSize: 10,
    pageSizeOptions: [10, 20, 50, 100],
  },

  // 上传配置
  upload: {
    maxSize: 10 * 1024 * 1024, // 10MB
    allowedTypes: ['image/jpeg', 'image/png', 'image/gif', 'application/pdf'],
    baseURL: 'https://api-china.itdos.com/api/HDFS/upload',
  },

  // 开发配置
  dev: {
    enableLog: true,
    enableMock: false,
  },

  // Microi系统配置
  microi: {
    // 客户端配置
    osClient: {
      // 默认客户端标识
      default: 'test',
      // 客户端配置映射
      clients: {
        apibase: 'https://api.nbweixin.cn',
        test: 'https://api.nbweixin.cn',
      },
    },
    // Token配置
    token: {
      expireMinutes: 15, // Token过期时间（分钟）
      refreshInterval: 60, // Token刷新检查间隔（秒）
      userInfoInterval: 300, // 用户信息更新间隔（秒）
    },
    // 调试开关
    consoleLog: true,
  },
}

// 环境配置
export const env = {
  development: {
    api: {
      baseURL: 'https://api.nbweixin.cn',
    },
    microi: {
      consoleLog: true,
    },
  },
  production: {
    api: {
      baseURL: 'https://api.nbweixin.cn',
    },
    microi: {
      consoleLog: false,
    },
  },
}

// 获取当前环境配置
export const getEnvConfig = () => {
  // #ifdef H5
  // @ts-ignore
  return process.env.NODE_ENV === 'development'
    ? env.development
    : env.production
  // #endif

  // #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU || MP-TOUTIAO
  return env.production
  // #endif

  // #ifdef APP-PLUS
  return env.production
  // #endif
}

// 获取当前环境配置
export const getCurrentConfig = () => {
  const envConfig = getEnvConfig()
  return {
    ...config,
    ...envConfig,
  }
}

// 获取API基础URL
export const getApiBaseURL = () => {
  const envConfig = getEnvConfig()
  return envConfig.api.baseURL || config.api.baseURL
}

// 获取存储键名
export const getStorageKeys = () => config.storage

// 获取Microi配置
export const getMicroiConfig = () => {
  const envConfig = getEnvConfig()
  return {
    ...config.microi,
    ...envConfig.microi,
  }
}

// 获取调试开关
export const isDebugEnabled = () => {
  const microiConfig = getMicroiConfig()
  return microiConfig.consoleLog
}

// 获取OsClient配置
export const getOsClientConfig = () => {
  const microiConfig = getMicroiConfig()
  return microiConfig.osClient
}

// 获取默认OsClient
export const getDefaultOsClient = () => {
  const osClientConfig = getOsClientConfig()
  return osClientConfig.default
}

// 获取OsClient对应的API地址
export const getOsClientApiUrl = (osClient: string) => {
  const osClientConfig = getOsClientConfig()
  return (
    osClientConfig.clients[osClient as keyof typeof osClientConfig.clients] ||
    osClientConfig.clients.apibase
  )
}

export default config
